import { fileURLToPath, URL } from 'node:url'
import { resolve } from 'path'
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import injectCss from 'vite-plugin-css-injected-by-js'

export default defineConfig({
  define: {
    __VUE_I18N_LEGACY_API__: JSON.stringify(false),
    __VUE_I18N_FULL_INSTALL__: JSON.stringify(false),
    __INTLIFY_PROD_DEVTOOLS__: JSON.stringify(false),
    __NEXT_VERSION__: JSON.stringify(process.env.npm_package_version),
    __NEXT_NAME__: JSON.stringify(process.env.npm_package_name),
    'process.env.NODE_ENV': '"production"', // 保留旧配置的环境变量定义
  },
  // 保持与旧项目一致的输出目录结构（关键）
  build: {
    minify: false, // 先关闭压缩便于调试，确认正常后再开启
    sourcemap: true,
    lib: {
      entry: resolve(__dirname, 'src/main.ts'),
      name: 'MarvelousVueApp', // 与旧项目保持一致的全局变量名
      formats: ['umd'], // 仅保留UMD格式确保全局暴露
      fileName: () => 'main.entry.js' // 固定输出文件名，与加载脚本匹配
    },
    cssCodeSplit: false,
    rollupOptions: {
      // 排除外部依赖（如果Vue是全局引入的）
      external: ['vue'],
      output: {
        // 关键：指定全局变量映射
        globals: {
          vue: 'Vue' // 确保Vue的全局变量名正确
        },
        // 关键：确保导出方式为named，保留方法名,
        exports: 'named',
        // 输出目录与旧项目保持一致
        dir: '../web/javascript',
        // 移除chunk分割，确保所有代码在一个文件中
        inlineDynamicImports: true
      }
    }
  },
  // 其他配置保持不变
  plugins: [vue(), injectCss()],
  resolve: {
    alias: {
      '@renderer': fileURLToPath(new URL('./src', import.meta.url))
    }
  },
  server: {
    host: '0.0.0.0',
    proxy: {
      '/command': {
        target: "http://127.0.0.1:8188/",
        changeOrigin: true,
        rewrite: path => path.replace(/^\/command/, '/command'),
      },
      '/e/': {
        target: "http://127.0.0.1:8081/",
        changeOrigin: true,
      }
    }
  }
})
